﻿using PMS.Core.Configuration.CommonEnumConfigs;

namespace PMS.Data.Entities.SystemModules
{
    /// <summary>
    /// 后台系统模块分配的模块按钮
    /// </summary>
    public partial class ModuleButton : BaseEntity
    {
        private string _displayname;
        /// <summary>
        /// Gets and sets the Name of the ModuleButton
        /// </summary>
        public string Name { get; set; }
        
        /// <summary>
        /// Gets and sets Name output on HTML 
        /// </summary>
        public string DisplayName 
        { 
            get 
            {
                if (string.IsNullOrEmpty(_displayname))
                    return Name;
                return _displayname;
            }
            set => _displayname = value;
        }

        /// <summary>
        /// Gets and sets Descript info for button
        /// </summary>
        public string ButtonDescription { get; set; }

        /// <summary>
        /// 按钮按功能分组，不论数据列表模块或是功能页面模块，按按钮操作数据摆放位置分组。
        /// 如顶部功能按钮：如批量数据操作按钮；
        /// 数据行操作按钮：数据行中数据对应操作按钮
        /// 底部数据操作按钮：如功能页面底部保存按钮
        /// </summary>
        public ModuleButtonGroup GroupType { get; set; }

        /// <summary>
        /// 按钮在Html中展示时使用的Html标签class名称
        /// </summary>
        public string HtmlButtonCSSClass { get; set; }

        /// <summary>
        /// 按钮在HTML页面中内部使用图标标签的CSS Class
        /// </summary>
        public string HtmlIconCSSClass { get; set; }

        /// <summary>
        /// 按钮Html页中响应操作事件名称
        /// </summary>
        public string EventName { get; set; }

        /// <summary>
        /// 系统模块按钮在页面显示时展示方式
        /// </summary>
        public ModuleButtonDisplayMode DisplayMode { get; set; }

        /// <summary>
        /// 排序号
        /// </summary>
        public int DisplayOrder { get; set; }

        //Only Use IsActive
        //public bool IsActive { get; set; }

        /// <summary>
        /// 按钮是否需要检查授权才能操作
        /// 如数据排序等不需要检查授权即可操作
        /// </summary>
        public bool AuthorizeRequired { get; set; }
    }
}
